package com.msblearn.C_014;

import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.Executors;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;

/**
 * ThreadPool最高级的接口也是实现Executors接口的
 * 以下是自定义线程：7个参数：
 * 1.corePoolSize:核心参数
 * 2.MaximumPoolSize:最大线程数。
 * 3.keepAliveTime:长期不干活存活时间
 * 4.存活时间的单位。
 * 5.BlockingQueue
 * 6.Executors的线程工厂
 * 7.当线程池忙，最大线程数忙，执行拒绝策略：JDK默认提供了四种。可以自定义。
 *       Abort:丢弃任务并抛出RejectedExecutionException异常。
 *       Discard:丢弃任务，但是不抛出异常
 *       discardOldest:丢弃队列最前面的任务，然后重新提交被拒绝的任务。
 *       CallerRuns:由调用线程处理该任务
 */
public class T02_ThreadPool {

    public static void main(String[] args) {
        ThreadPoolExecutor tpe = new ThreadPoolExecutor(2,4,60, TimeUnit.SECONDS,
                new ArrayBlockingQueue<>(4),
                Executors.defaultThreadFactory(),
                new ThreadPoolExecutor.DiscardOldestPolicy());

    }
}
